// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
// an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by google-apis-code-generator 1.5.1
//     C# generator version: 1.22.0
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

/**
 * \brief
 *   Google Identity Toolkit API Version v3
 *
 * \section ApiInfo API Version Information
 *    <table>
 *      <tr><th>API
 *          <td><a href='https://developers.google.com/identity-toolkit/v3/'>Google Identity Toolkit API</a>
 *      <tr><th>API Version<td>v3
 *      <tr><th>API Rev<td>20170308 (797)
 *      <tr><th>API Docs
 *          <td><a href='https://developers.google.com/identity-toolkit/v3/'>
 *              https://developers.google.com/identity-toolkit/v3/</a>
 *      <tr><th>Discovery Name<td>identitytoolkit
 *    </table>
 *
 * \section ForMoreInfo For More Information
 *
 * The complete API documentation for using Google Identity Toolkit API can be found at
 * <a href='https://developers.google.com/identity-toolkit/v3/'>https://developers.google.com/identity-toolkit/v3/</a>.
 *
 * For more information about the Google APIs Client Library for .NET, see
 * <a href='https://developers.google.com/api-client-library/dotnet/get_started'>
 * https://developers.google.com/api-client-library/dotnet/get_started</a>
 */

namespace Google.Apis.IdentityToolkit.v3
{
    /// <summary>The IdentityToolkit Service.</summary>
    public class IdentityToolkitService : Google.Apis.Services.BaseClientService
    {
        /// <summary>The API version.</summary>
        public const string Version = "v3";

        /// <summary>The discovery version used to generate this service.</summary>
        public static Google.Apis.Discovery.DiscoveryVersion DiscoveryVersionUsed =
            Google.Apis.Discovery.DiscoveryVersion.Version_1_0;

        /// <summary>Constructs a new service.</summary>
        public IdentityToolkitService() :
            this(new Google.Apis.Services.BaseClientService.Initializer()) {}

        /// <summary>Constructs a new service.</summary>
        /// <param name="initializer">The service initializer.</param>
        public IdentityToolkitService(Google.Apis.Services.BaseClientService.Initializer initializer)
            : base(initializer)
        {
            relyingparty = new RelyingpartyResource(this);
        }

        /// <summary>Gets the service supported features.</summary>
        public override System.Collections.Generic.IList<string> Features
        {
            get { return new string[0]; }
        }

        /// <summary>Gets the service name.</summary>
        public override string Name
        {
            get { return "identitytoolkit"; }
        }

        /// <summary>Gets the service base URI.</summary>
        public override string BaseUri
        {
            get { return "https://www.googleapis.com/identitytoolkit/v3/relyingparty/"; }
        }

        /// <summary>Gets the service base path.</summary>
        public override string BasePath
        {
            get { return "identitytoolkit/v3/relyingparty/"; }
        }

        /// <summary>Available OAuth 2.0 scopes for use with the Google Identity Toolkit API.</summary>
        public class Scope
        {
            /// <summary>View and manage your data across Google Cloud Platform services</summary>
            public static string CloudPlatform = "https://www.googleapis.com/auth/cloud-platform";

            /// <summary>View and administer all your Firebase data and settings</summary>
            public static string Firebase = "https://www.googleapis.com/auth/firebase";

        }



        private readonly RelyingpartyResource relyingparty;

        /// <summary>Gets the Relyingparty resource.</summary>
        public virtual RelyingpartyResource Relyingparty
        {
            get { return relyingparty; }
        }
    }

    ///<summary>A base abstract class for IdentityToolkit requests.</summary>
    public abstract class IdentityToolkitBaseServiceRequest<TResponse> : Google.Apis.Requests.ClientServiceRequest<TResponse>
    {
        ///<summary>Constructs a new IdentityToolkitBaseServiceRequest instance.</summary>
        protected IdentityToolkitBaseServiceRequest(Google.Apis.Services.IClientService service)
            : base(service)
        {
        }

        /// <summary>Data format for the response.</summary>
        /// [default: json]
        [Google.Apis.Util.RequestParameterAttribute("alt", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<AltEnum> Alt { get; set; }

        /// <summary>Data format for the response.</summary>
        public enum AltEnum
        {
            /// <summary>Responses with Content-Type of application/json</summary>
            [Google.Apis.Util.StringValueAttribute("json")]
            Json,
        }

        /// <summary>Selector specifying which fields to include in a partial response.</summary>
        [Google.Apis.Util.RequestParameterAttribute("fields", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Fields { get; set; }

        /// <summary>API key. Your API key identifies your project and provides you with API access, quota, and reports.
        /// Required unless you provide an OAuth 2.0 token.</summary>
        [Google.Apis.Util.RequestParameterAttribute("key", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Key { get; set; }

        /// <summary>OAuth 2.0 token for the current user.</summary>
        [Google.Apis.Util.RequestParameterAttribute("oauth_token", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string OauthToken { get; set; }

        /// <summary>Returns response with indentations and line breaks.</summary>
        /// [default: true]
        [Google.Apis.Util.RequestParameterAttribute("prettyPrint", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<bool> PrettyPrint { get; set; }

        /// <summary>Available to use for quota purposes for server-side applications. Can be any arbitrary string
        /// assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.</summary>
        [Google.Apis.Util.RequestParameterAttribute("quotaUser", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string QuotaUser { get; set; }

        /// <summary>IP address of the site where the request originates. Use this if you want to enforce per-user
        /// limits.</summary>
        [Google.Apis.Util.RequestParameterAttribute("userIp", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string UserIp { get; set; }

        /// <summary>Initializes IdentityToolkit parameter list.</summary>
        protected override void InitParameters()
        {
            base.InitParameters();

            RequestParameters.Add(
                "alt", new Google.Apis.Discovery.Parameter
                {
                    Name = "alt",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = "json",
                    Pattern = null,
                });
            RequestParameters.Add(
                "fields", new Google.Apis.Discovery.Parameter
                {
                    Name = "fields",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "key", new Google.Apis.Discovery.Parameter
                {
                    Name = "key",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "oauth_token", new Google.Apis.Discovery.Parameter
                {
                    Name = "oauth_token",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "prettyPrint", new Google.Apis.Discovery.Parameter
                {
                    Name = "prettyPrint",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = "true",
                    Pattern = null,
                });
            RequestParameters.Add(
                "quotaUser", new Google.Apis.Discovery.Parameter
                {
                    Name = "quotaUser",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "userIp", new Google.Apis.Discovery.Parameter
                {
                    Name = "userIp",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
        }
    }

    /// <summary>The "relyingparty" collection of methods.</summary>
    public class RelyingpartyResource
    {
        private const string Resource = "relyingparty";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public RelyingpartyResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }


        /// <summary>Creates the URI used by the IdP to authenticate the user.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual CreateAuthUriRequest CreateAuthUri(Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyCreateAuthUriRequest body)
        {
            return new CreateAuthUriRequest(service, body);
        }

        /// <summary>Creates the URI used by the IdP to authenticate the user.</summary>
        public class CreateAuthUriRequest : IdentityToolkitBaseServiceRequest<Google.Apis.IdentityToolkit.v3.Data.CreateAuthUriResponse>
        {
            /// <summary>Constructs a new CreateAuthUri request.</summary>
            public CreateAuthUriRequest(Google.Apis.Services.IClientService service, Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyCreateAuthUriRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyCreateAuthUriRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "createAuthUri"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "createAuthUri"; }
            }

            /// <summary>Initializes CreateAuthUri parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Delete user account.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual DeleteAccountRequest DeleteAccount(Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyDeleteAccountRequest body)
        {
            return new DeleteAccountRequest(service, body);
        }

        /// <summary>Delete user account.</summary>
        public class DeleteAccountRequest : IdentityToolkitBaseServiceRequest<Google.Apis.IdentityToolkit.v3.Data.DeleteAccountResponse>
        {
            /// <summary>Constructs a new DeleteAccount request.</summary>
            public DeleteAccountRequest(Google.Apis.Services.IClientService service, Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyDeleteAccountRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyDeleteAccountRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "deleteAccount"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "deleteAccount"; }
            }

            /// <summary>Initializes DeleteAccount parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Batch download user accounts.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual DownloadAccountRequest DownloadAccount(Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyDownloadAccountRequest body)
        {
            return new DownloadAccountRequest(service, body);
        }

        /// <summary>Batch download user accounts.</summary>
        public class DownloadAccountRequest : IdentityToolkitBaseServiceRequest<Google.Apis.IdentityToolkit.v3.Data.DownloadAccountResponse>
        {
            /// <summary>Constructs a new DownloadAccount request.</summary>
            public DownloadAccountRequest(Google.Apis.Services.IClientService service, Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyDownloadAccountRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyDownloadAccountRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "downloadAccount"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "downloadAccount"; }
            }

            /// <summary>Initializes DownloadAccount parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Returns the account info.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual GetAccountInfoRequest GetAccountInfo(Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyGetAccountInfoRequest body)
        {
            return new GetAccountInfoRequest(service, body);
        }

        /// <summary>Returns the account info.</summary>
        public class GetAccountInfoRequest : IdentityToolkitBaseServiceRequest<Google.Apis.IdentityToolkit.v3.Data.GetAccountInfoResponse>
        {
            /// <summary>Constructs a new GetAccountInfo request.</summary>
            public GetAccountInfoRequest(Google.Apis.Services.IClientService service, Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyGetAccountInfoRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyGetAccountInfoRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "getAccountInfo"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "getAccountInfo"; }
            }

            /// <summary>Initializes GetAccountInfo parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Get a code for user action confirmation.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual GetOobConfirmationCodeRequest GetOobConfirmationCode(Google.Apis.IdentityToolkit.v3.Data.Relyingparty body)
        {
            return new GetOobConfirmationCodeRequest(service, body);
        }

        /// <summary>Get a code for user action confirmation.</summary>
        public class GetOobConfirmationCodeRequest : IdentityToolkitBaseServiceRequest<Google.Apis.IdentityToolkit.v3.Data.GetOobConfirmationCodeResponse>
        {
            /// <summary>Constructs a new GetOobConfirmationCode request.</summary>
            public GetOobConfirmationCodeRequest(Google.Apis.Services.IClientService service, Google.Apis.IdentityToolkit.v3.Data.Relyingparty body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.IdentityToolkit.v3.Data.Relyingparty Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "getOobConfirmationCode"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "getOobConfirmationCode"; }
            }

            /// <summary>Initializes GetOobConfirmationCode parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Get project configuration.</summary>
        public virtual GetProjectConfigRequest GetProjectConfig()
        {
            return new GetProjectConfigRequest(service);
        }

        /// <summary>Get project configuration.</summary>
        public class GetProjectConfigRequest : IdentityToolkitBaseServiceRequest<Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyGetProjectConfigResponse>
        {
            /// <summary>Constructs a new GetProjectConfig request.</summary>
            public GetProjectConfigRequest(Google.Apis.Services.IClientService service)
                : base(service)
            {
                InitParameters();
            }


            /// <summary>Delegated GCP project number of the request.</summary>
            [Google.Apis.Util.RequestParameterAttribute("delegatedProjectNumber", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string DelegatedProjectNumber { get; set; }

            /// <summary>GCP project number of the request.</summary>
            [Google.Apis.Util.RequestParameterAttribute("projectNumber", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string ProjectNumber { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "getProjectConfig"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "getProjectConfig"; }
            }

            /// <summary>Initializes GetProjectConfig parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "delegatedProjectNumber", new Google.Apis.Discovery.Parameter
                    {
                        Name = "delegatedProjectNumber",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "projectNumber", new Google.Apis.Discovery.Parameter
                    {
                        Name = "projectNumber",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Get token signing public key.</summary>
        public virtual GetPublicKeysRequest GetPublicKeys()
        {
            return new GetPublicKeysRequest(service);
        }

        /// <summary>Get token signing public key.</summary>
        public class GetPublicKeysRequest : IdentityToolkitBaseServiceRequest<Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyGetPublicKeysResponse>
        {
            /// <summary>Constructs a new GetPublicKeys request.</summary>
            public GetPublicKeysRequest(Google.Apis.Services.IClientService service)
                : base(service)
            {
                InitParameters();
            }



            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "getPublicKeys"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "publicKeys"; }
            }

            /// <summary>Initializes GetPublicKeys parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Get recaptcha secure param.</summary>
        public virtual GetRecaptchaParamRequest GetRecaptchaParam()
        {
            return new GetRecaptchaParamRequest(service);
        }

        /// <summary>Get recaptcha secure param.</summary>
        public class GetRecaptchaParamRequest : IdentityToolkitBaseServiceRequest<Google.Apis.IdentityToolkit.v3.Data.GetRecaptchaParamResponse>
        {
            /// <summary>Constructs a new GetRecaptchaParam request.</summary>
            public GetRecaptchaParamRequest(Google.Apis.Services.IClientService service)
                : base(service)
            {
                InitParameters();
            }



            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "getRecaptchaParam"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "getRecaptchaParam"; }
            }

            /// <summary>Initializes GetRecaptchaParam parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Reset password for a user.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual ResetPasswordRequest ResetPassword(Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyResetPasswordRequest body)
        {
            return new ResetPasswordRequest(service, body);
        }

        /// <summary>Reset password for a user.</summary>
        public class ResetPasswordRequest : IdentityToolkitBaseServiceRequest<Google.Apis.IdentityToolkit.v3.Data.ResetPasswordResponse>
        {
            /// <summary>Constructs a new ResetPassword request.</summary>
            public ResetPasswordRequest(Google.Apis.Services.IClientService service, Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyResetPasswordRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyResetPasswordRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "resetPassword"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "resetPassword"; }
            }

            /// <summary>Initializes ResetPassword parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Set account info for a user.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual SetAccountInfoRequest SetAccountInfo(Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartySetAccountInfoRequest body)
        {
            return new SetAccountInfoRequest(service, body);
        }

        /// <summary>Set account info for a user.</summary>
        public class SetAccountInfoRequest : IdentityToolkitBaseServiceRequest<Google.Apis.IdentityToolkit.v3.Data.SetAccountInfoResponse>
        {
            /// <summary>Constructs a new SetAccountInfo request.</summary>
            public SetAccountInfoRequest(Google.Apis.Services.IClientService service, Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartySetAccountInfoRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartySetAccountInfoRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "setAccountInfo"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "setAccountInfo"; }
            }

            /// <summary>Initializes SetAccountInfo parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Set project configuration.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual SetProjectConfigRequest SetProjectConfig(Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartySetProjectConfigRequest body)
        {
            return new SetProjectConfigRequest(service, body);
        }

        /// <summary>Set project configuration.</summary>
        public class SetProjectConfigRequest : IdentityToolkitBaseServiceRequest<Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartySetProjectConfigResponse>
        {
            /// <summary>Constructs a new SetProjectConfig request.</summary>
            public SetProjectConfigRequest(Google.Apis.Services.IClientService service, Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartySetProjectConfigRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartySetProjectConfigRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "setProjectConfig"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "setProjectConfig"; }
            }

            /// <summary>Initializes SetProjectConfig parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Sign out user.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual SignOutUserRequest SignOutUser(Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartySignOutUserRequest body)
        {
            return new SignOutUserRequest(service, body);
        }

        /// <summary>Sign out user.</summary>
        public class SignOutUserRequest : IdentityToolkitBaseServiceRequest<Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartySignOutUserResponse>
        {
            /// <summary>Constructs a new SignOutUser request.</summary>
            public SignOutUserRequest(Google.Apis.Services.IClientService service, Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartySignOutUserRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartySignOutUserRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "signOutUser"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "signOutUser"; }
            }

            /// <summary>Initializes SignOutUser parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Signup new user.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual SignupNewUserRequest SignupNewUser(Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartySignupNewUserRequest body)
        {
            return new SignupNewUserRequest(service, body);
        }

        /// <summary>Signup new user.</summary>
        public class SignupNewUserRequest : IdentityToolkitBaseServiceRequest<Google.Apis.IdentityToolkit.v3.Data.SignupNewUserResponse>
        {
            /// <summary>Constructs a new SignupNewUser request.</summary>
            public SignupNewUserRequest(Google.Apis.Services.IClientService service, Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartySignupNewUserRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartySignupNewUserRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "signupNewUser"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "signupNewUser"; }
            }

            /// <summary>Initializes SignupNewUser parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Batch upload existing user accounts.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual UploadAccountRequest UploadAccount(Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyUploadAccountRequest body)
        {
            return new UploadAccountRequest(service, body);
        }

        /// <summary>Batch upload existing user accounts.</summary>
        public class UploadAccountRequest : IdentityToolkitBaseServiceRequest<Google.Apis.IdentityToolkit.v3.Data.UploadAccountResponse>
        {
            /// <summary>Constructs a new UploadAccount request.</summary>
            public UploadAccountRequest(Google.Apis.Services.IClientService service, Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyUploadAccountRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyUploadAccountRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "uploadAccount"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "uploadAccount"; }
            }

            /// <summary>Initializes UploadAccount parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Verifies the assertion returned by the IdP.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual VerifyAssertionRequest VerifyAssertion(Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyVerifyAssertionRequest body)
        {
            return new VerifyAssertionRequest(service, body);
        }

        /// <summary>Verifies the assertion returned by the IdP.</summary>
        public class VerifyAssertionRequest : IdentityToolkitBaseServiceRequest<Google.Apis.IdentityToolkit.v3.Data.VerifyAssertionResponse>
        {
            /// <summary>Constructs a new VerifyAssertion request.</summary>
            public VerifyAssertionRequest(Google.Apis.Services.IClientService service, Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyVerifyAssertionRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyVerifyAssertionRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "verifyAssertion"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "verifyAssertion"; }
            }

            /// <summary>Initializes VerifyAssertion parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Verifies the developer asserted ID token.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual VerifyCustomTokenRequest VerifyCustomToken(Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyVerifyCustomTokenRequest body)
        {
            return new VerifyCustomTokenRequest(service, body);
        }

        /// <summary>Verifies the developer asserted ID token.</summary>
        public class VerifyCustomTokenRequest : IdentityToolkitBaseServiceRequest<Google.Apis.IdentityToolkit.v3.Data.VerifyCustomTokenResponse>
        {
            /// <summary>Constructs a new VerifyCustomToken request.</summary>
            public VerifyCustomTokenRequest(Google.Apis.Services.IClientService service, Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyVerifyCustomTokenRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyVerifyCustomTokenRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "verifyCustomToken"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "verifyCustomToken"; }
            }

            /// <summary>Initializes VerifyCustomToken parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Verifies the user entered password.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual VerifyPasswordRequest VerifyPassword(Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyVerifyPasswordRequest body)
        {
            return new VerifyPasswordRequest(service, body);
        }

        /// <summary>Verifies the user entered password.</summary>
        public class VerifyPasswordRequest : IdentityToolkitBaseServiceRequest<Google.Apis.IdentityToolkit.v3.Data.VerifyPasswordResponse>
        {
            /// <summary>Constructs a new VerifyPassword request.</summary>
            public VerifyPasswordRequest(Google.Apis.Services.IClientService service, Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyVerifyPasswordRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.IdentityToolkit.v3.Data.IdentitytoolkitRelyingpartyVerifyPasswordRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "verifyPassword"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "verifyPassword"; }
            }

            /// <summary>Initializes VerifyPassword parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }
    }
}

namespace Google.Apis.IdentityToolkit.v3.Data
{    

    /// <summary>Response of creating the IDP authentication URL.</summary>
    public class CreateAuthUriResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>all providers the user has once used to do federated login</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("allProviders")]
        public virtual System.Collections.Generic.IList<string> AllProviders { get; set; } 

        /// <summary>The URI used by the IDP to authenticate the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("authUri")]
        public virtual string AuthUri { get; set; } 

        /// <summary>True if captcha is required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("captchaRequired")]
        public virtual System.Nullable<bool> CaptchaRequired { get; set; } 

        /// <summary>True if the authUri is for user's existing provider.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("forExistingProvider")]
        public virtual System.Nullable<bool> ForExistingProvider { get; set; } 

        /// <summary>The fixed string identitytoolkit#CreateAuthUriResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The provider ID of the auth URI.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("providerId")]
        public virtual string ProviderId { get; set; } 

        /// <summary>Whether the user is registered if the identifier is an email.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("registered")]
        public virtual System.Nullable<bool> Registered { get; set; } 

        /// <summary>Session ID which should be passed in the following verifyAssertion request.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sessionId")]
        public virtual string SessionId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Respone of deleting account.</summary>
    public class DeleteAccountResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The fixed string "identitytoolkit#DeleteAccountResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Response of downloading accounts in batch.</summary>
    public class DownloadAccountResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The fixed string "identitytoolkit#DownloadAccountResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The next page token. To be used in a subsequent request to return the next page of
        /// results.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        /// <summary>The user accounts data.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("users")]
        public virtual System.Collections.Generic.IList<UserInfo> Users { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Template for an email template.</summary>
    public class EmailTemplate : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Email body.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("body")]
        public virtual string Body { get; set; } 

        /// <summary>Email body format.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("format")]
        public virtual string Format { get; set; } 

        /// <summary>From address of the email.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("from")]
        public virtual string From { get; set; } 

        /// <summary>From display name.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("fromDisplayName")]
        public virtual string FromDisplayName { get; set; } 

        /// <summary>Reply-to address.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("replyTo")]
        public virtual string ReplyTo { get; set; } 

        /// <summary>Subject of the email.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("subject")]
        public virtual string Subject { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Response of getting account information.</summary>
    public class GetAccountInfoResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The fixed string "identitytoolkit#GetAccountInfoResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The info of the users.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("users")]
        public virtual System.Collections.Generic.IList<UserInfo> Users { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Response of getting a code for user confirmation (reset password, change email etc.).</summary>
    public class GetOobConfirmationCodeResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The email address that the email is sent to.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("email")]
        public virtual string Email { get; set; } 

        /// <summary>The fixed string "identitytoolkit#GetOobConfirmationCodeResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The code to be send to the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("oobCode")]
        public virtual string OobCode { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Response of getting recaptcha param.</summary>
    public class GetRecaptchaParamResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The fixed string "identitytoolkit#GetRecaptchaParamResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>Site key registered at recaptcha.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("recaptchaSiteKey")]
        public virtual string RecaptchaSiteKey { get; set; } 

        /// <summary>The stoken field for the recaptcha widget, used to request captcha challenge.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("recaptchaStoken")]
        public virtual string RecaptchaStoken { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Request to get the IDP authentication URL.</summary>
    public class IdentitytoolkitRelyingpartyCreateAuthUriRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The app ID of the mobile app, base64(CERT_SHA1):PACKAGE_NAME for Android, BUNDLE_ID for
        /// iOS.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("appId")]
        public virtual string AppId { get; set; } 

        /// <summary>Explicitly specify the auth flow type. Currently only support "CODE_FLOW" type. The field is only
        /// used for Google provider.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("authFlowType")]
        public virtual string AuthFlowType { get; set; } 

        /// <summary>The relying party OAuth client ID.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("clientId")]
        public virtual string ClientId { get; set; } 

        /// <summary>The opaque value used by the client to maintain context info between the authentication request and
        /// the IDP callback.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("context")]
        public virtual string Context { get; set; } 

        /// <summary>The URI to which the IDP redirects the user after the federated login flow.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("continueUri")]
        public virtual string ContinueUri { get; set; } 

        /// <summary>The query parameter that client can customize by themselves in auth url. The following parameters
        /// are reserved for server so that they cannot be customized by clients: client_id, response_type, scope,
        /// redirect_uri, state, oauth_token.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("customParameter")]
        public virtual System.Collections.Generic.IDictionary<string,string> CustomParameter { get; set; } 

        /// <summary>The hosted domain to restrict sign-in to accounts at that domain for Google Apps hosted
        /// accounts.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("hostedDomain")]
        public virtual string HostedDomain { get; set; } 

        /// <summary>The email or federated ID of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("identifier")]
        public virtual string Identifier { get; set; } 

        /// <summary>The developer's consumer key for OpenId OAuth Extension</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("oauthConsumerKey")]
        public virtual string OauthConsumerKey { get; set; } 

        /// <summary>Additional oauth scopes, beyond the basid user profile, that the user would be prompted to
        /// grant</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("oauthScope")]
        public virtual string OauthScope { get; set; } 

        /// <summary>Optional realm for OpenID protocol. The sub string "scheme://domain:port" of the param
        /// "continueUri" is used if this is not set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("openidRealm")]
        public virtual string OpenidRealm { get; set; } 

        /// <summary>The native app package for OTA installation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("otaApp")]
        public virtual string OtaApp { get; set; } 

        /// <summary>The IdP ID. For white listed IdPs it's a short domain name e.g. google.com, aol.com, live.net and
        /// yahoo.com. For other OpenID IdPs it's the OP identifier.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("providerId")]
        public virtual string ProviderId { get; set; } 

        /// <summary>The session_id passed by client.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sessionId")]
        public virtual string SessionId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Request to delete account.</summary>
    public class IdentitytoolkitRelyingpartyDeleteAccountRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>GCP project number of the requesting delegated app. Currently only intended for Firebase V1
        /// migration.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("delegatedProjectNumber")]
        public virtual System.Nullable<long> DelegatedProjectNumber { get; set; } 

        /// <summary>The GITKit token or STS id token of the authenticated user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("idToken")]
        public virtual string IdToken { get; set; } 

        /// <summary>The local ID of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("localId")]
        public virtual string LocalId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Request to download user account in batch.</summary>
    public class IdentitytoolkitRelyingpartyDownloadAccountRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>GCP project number of the requesting delegated app. Currently only intended for Firebase V1
        /// migration.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("delegatedProjectNumber")]
        public virtual System.Nullable<long> DelegatedProjectNumber { get; set; } 

        /// <summary>The max number of results to return in the response.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("maxResults")]
        public virtual System.Nullable<long> MaxResults { get; set; } 

        /// <summary>The token for the next page. This should be taken from the previous response.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        /// <summary>Specify which project (field value is actually project id) to operate. Only used when provided
        /// credential.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("targetProjectId")]
        public virtual string TargetProjectId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Request to get the account information.</summary>
    public class IdentitytoolkitRelyingpartyGetAccountInfoRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>GCP project number of the requesting delegated app. Currently only intended for Firebase V1
        /// migration.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("delegatedProjectNumber")]
        public virtual System.Nullable<long> DelegatedProjectNumber { get; set; } 

        /// <summary>The list of emails of the users to inquiry.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("email")]
        public virtual System.Collections.Generic.IList<string> Email { get; set; } 

        /// <summary>The GITKit token of the authenticated user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("idToken")]
        public virtual string IdToken { get; set; } 

        /// <summary>The list of local ID's of the users to inquiry.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("localId")]
        public virtual System.Collections.Generic.IList<string> LocalId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Response of getting the project configuration.</summary>
    public class IdentitytoolkitRelyingpartyGetProjectConfigResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Whether to allow password user sign in or sign up.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("allowPasswordUser")]
        public virtual System.Nullable<bool> AllowPasswordUser { get; set; } 

        /// <summary>Browser API key, needed when making http request to Apiary.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("apiKey")]
        public virtual string ApiKey { get; set; } 

        /// <summary>Authorized domains.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("authorizedDomains")]
        public virtual System.Collections.Generic.IList<string> AuthorizedDomains { get; set; } 

        /// <summary>Change email template.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("changeEmailTemplate")]
        public virtual EmailTemplate ChangeEmailTemplate { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("dynamicLinksDomain")]
        public virtual string DynamicLinksDomain { get; set; } 

        /// <summary>Whether anonymous user is enabled.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("enableAnonymousUser")]
        public virtual System.Nullable<bool> EnableAnonymousUser { get; set; } 

        /// <summary>OAuth2 provider configuration.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("idpConfig")]
        public virtual System.Collections.Generic.IList<IdpConfig> IdpConfig { get; set; } 

        /// <summary>Legacy reset password email template.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("legacyResetPasswordTemplate")]
        public virtual EmailTemplate LegacyResetPasswordTemplate { get; set; } 

        /// <summary>Project ID of the relying party.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("projectId")]
        public virtual string ProjectId { get; set; } 

        /// <summary>Reset password email template.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("resetPasswordTemplate")]
        public virtual EmailTemplate ResetPasswordTemplate { get; set; } 

        /// <summary>Whether to use email sending provided by Firebear.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("useEmailSending")]
        public virtual System.Nullable<bool> UseEmailSending { get; set; } 

        /// <summary>Verify email template.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("verifyEmailTemplate")]
        public virtual EmailTemplate VerifyEmailTemplate { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Request to reset the password.</summary>
    public class IdentitytoolkitRelyingpartyResetPasswordRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The email address of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("email")]
        public virtual string Email { get; set; } 

        /// <summary>The new password inputted by the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("newPassword")]
        public virtual string NewPassword { get; set; } 

        /// <summary>The old password inputted by the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("oldPassword")]
        public virtual string OldPassword { get; set; } 

        /// <summary>The confirmation code.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("oobCode")]
        public virtual string OobCode { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Request to set the account information.</summary>
    public class IdentitytoolkitRelyingpartySetAccountInfoRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The captcha challenge.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("captchaChallenge")]
        public virtual string CaptchaChallenge { get; set; } 

        /// <summary>Response to the captcha.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("captchaResponse")]
        public virtual string CaptchaResponse { get; set; } 

        /// <summary>The timestamp when the account is created.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("createdAt")]
        public virtual System.Nullable<long> CreatedAt { get; set; } 

        /// <summary>GCP project number of the requesting delegated app. Currently only intended for Firebase V1
        /// migration.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("delegatedProjectNumber")]
        public virtual System.Nullable<long> DelegatedProjectNumber { get; set; } 

        /// <summary>The attributes users request to delete.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("deleteAttribute")]
        public virtual System.Collections.Generic.IList<string> DeleteAttribute { get; set; } 

        /// <summary>The IDPs the user request to delete.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("deleteProvider")]
        public virtual System.Collections.Generic.IList<string> DeleteProvider { get; set; } 

        /// <summary>Whether to disable the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("disableUser")]
        public virtual System.Nullable<bool> DisableUser { get; set; } 

        /// <summary>The name of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("displayName")]
        public virtual string DisplayName { get; set; } 

        /// <summary>The email of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("email")]
        public virtual string Email { get; set; } 

        /// <summary>Mark the email as verified or not.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("emailVerified")]
        public virtual System.Nullable<bool> EmailVerified { get; set; } 

        /// <summary>The GITKit token of the authenticated user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("idToken")]
        public virtual string IdToken { get; set; } 

        /// <summary>Instance id token of the app.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("instanceId")]
        public virtual string InstanceId { get; set; } 

        /// <summary>Last login timestamp.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lastLoginAt")]
        public virtual System.Nullable<long> LastLoginAt { get; set; } 

        /// <summary>The local ID of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("localId")]
        public virtual string LocalId { get; set; } 

        /// <summary>The out-of-band code of the change email request.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("oobCode")]
        public virtual string OobCode { get; set; } 

        /// <summary>The new password of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("password")]
        public virtual string Password { get; set; } 

        /// <summary>The photo url of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("photoUrl")]
        public virtual string PhotoUrl { get; set; } 

        /// <summary>The associated IDPs of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("provider")]
        public virtual System.Collections.Generic.IList<string> Provider { get; set; } 

        /// <summary>Whether return sts id token and refresh token instead of gitkit token.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("returnSecureToken")]
        public virtual System.Nullable<bool> ReturnSecureToken { get; set; } 

        /// <summary>Mark the user to upgrade to federated login.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("upgradeToFederatedLogin")]
        public virtual System.Nullable<bool> UpgradeToFederatedLogin { get; set; } 

        /// <summary>Timestamp in seconds for valid login token.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("validSince")]
        public virtual System.Nullable<long> ValidSince { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Request to set the project configuration.</summary>
    public class IdentitytoolkitRelyingpartySetProjectConfigRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Whether to allow password user sign in or sign up.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("allowPasswordUser")]
        public virtual System.Nullable<bool> AllowPasswordUser { get; set; } 

        /// <summary>Browser API key, needed when making http request to Apiary.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("apiKey")]
        public virtual string ApiKey { get; set; } 

        /// <summary>Authorized domains for widget redirect.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("authorizedDomains")]
        public virtual System.Collections.Generic.IList<string> AuthorizedDomains { get; set; } 

        /// <summary>Change email template.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("changeEmailTemplate")]
        public virtual EmailTemplate ChangeEmailTemplate { get; set; } 

        /// <summary>GCP project number of the requesting delegated app. Currently only intended for Firebase V1
        /// migration.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("delegatedProjectNumber")]
        public virtual System.Nullable<long> DelegatedProjectNumber { get; set; } 

        /// <summary>Whether to enable anonymous user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("enableAnonymousUser")]
        public virtual System.Nullable<bool> EnableAnonymousUser { get; set; } 

        /// <summary>Oauth2 provider configuration.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("idpConfig")]
        public virtual System.Collections.Generic.IList<IdpConfig> IdpConfig { get; set; } 

        /// <summary>Legacy reset password email template.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("legacyResetPasswordTemplate")]
        public virtual EmailTemplate LegacyResetPasswordTemplate { get; set; } 

        /// <summary>Reset password email template.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("resetPasswordTemplate")]
        public virtual EmailTemplate ResetPasswordTemplate { get; set; } 

        /// <summary>Whether to use email sending provided by Firebear.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("useEmailSending")]
        public virtual System.Nullable<bool> UseEmailSending { get; set; } 

        /// <summary>Verify email template.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("verifyEmailTemplate")]
        public virtual EmailTemplate VerifyEmailTemplate { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Response of setting the project configuration.</summary>
    public class IdentitytoolkitRelyingpartySetProjectConfigResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Project ID of the relying party.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("projectId")]
        public virtual string ProjectId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Request to sign out user.</summary>
    public class IdentitytoolkitRelyingpartySignOutUserRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Instance id token of the app.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("instanceId")]
        public virtual string InstanceId { get; set; } 

        /// <summary>The local ID of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("localId")]
        public virtual string LocalId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Response of signing out user.</summary>
    public class IdentitytoolkitRelyingpartySignOutUserResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The local ID of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("localId")]
        public virtual string LocalId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Request to signup new user, create anonymous user or anonymous user reauth.</summary>
    public class IdentitytoolkitRelyingpartySignupNewUserRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The captcha challenge.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("captchaChallenge")]
        public virtual string CaptchaChallenge { get; set; } 

        /// <summary>Response to the captcha.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("captchaResponse")]
        public virtual string CaptchaResponse { get; set; } 

        /// <summary>Whether to disable the user. Only can be used by service account.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("disabled")]
        public virtual System.Nullable<bool> Disabled { get; set; } 

        /// <summary>The name of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("displayName")]
        public virtual string DisplayName { get; set; } 

        /// <summary>The email of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("email")]
        public virtual string Email { get; set; } 

        /// <summary>Mark the email as verified or not. Only can be used by service account.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("emailVerified")]
        public virtual System.Nullable<bool> EmailVerified { get; set; } 

        /// <summary>The GITKit token of the authenticated user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("idToken")]
        public virtual string IdToken { get; set; } 

        /// <summary>Instance id token of the app.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("instanceId")]
        public virtual string InstanceId { get; set; } 

        /// <summary>Privileged caller can create user with specified user id.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("localId")]
        public virtual string LocalId { get; set; } 

        /// <summary>The new password of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("password")]
        public virtual string Password { get; set; } 

        /// <summary>The photo url of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("photoUrl")]
        public virtual string PhotoUrl { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Request to upload user account in batch.</summary>
    public class IdentitytoolkitRelyingpartyUploadAccountRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Whether allow overwrite existing account when user local_id exists.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("allowOverwrite")]
        public virtual System.Nullable<bool> AllowOverwrite { get; set; } 

        /// <summary>GCP project number of the requesting delegated app. Currently only intended for Firebase V1
        /// migration.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("delegatedProjectNumber")]
        public virtual System.Nullable<long> DelegatedProjectNumber { get; set; } 

        /// <summary>The password hash algorithm.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("hashAlgorithm")]
        public virtual string HashAlgorithm { get; set; } 

        /// <summary>Memory cost for hash calculation. Used by scrypt similar algorithms.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("memoryCost")]
        public virtual System.Nullable<int> MemoryCost { get; set; } 

        /// <summary>Rounds for hash calculation. Used by scrypt and similar algorithms.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("rounds")]
        public virtual System.Nullable<int> Rounds { get; set; } 

        /// <summary>The salt separator.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("saltSeparator")]
        public virtual string SaltSeparator { get; set; } 

        /// <summary>If true, backend will do sanity check(including duplicate email and federated id) when uploading
        /// account.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sanityCheck")]
        public virtual System.Nullable<bool> SanityCheck { get; set; } 

        /// <summary>The key for to hash the password.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("signerKey")]
        public virtual string SignerKey { get; set; } 

        /// <summary>Specify which project (field value is actually project id) to operate. Only used when provided
        /// credential.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("targetProjectId")]
        public virtual string TargetProjectId { get; set; } 

        /// <summary>The account info to be stored.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("users")]
        public virtual System.Collections.Generic.IList<UserInfo> Users { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Request to verify the IDP assertion.</summary>
    public class IdentitytoolkitRelyingpartyVerifyAssertionRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>When it's true, automatically creates a new account if the user doesn't exist. When it's false,
        /// allows existing user to sign in normally and throws exception if the user doesn't exist.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("autoCreate")]
        public virtual System.Nullable<bool> AutoCreate { get; set; } 

        /// <summary>GCP project number of the requesting delegated app. Currently only intended for Firebase V1
        /// migration.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("delegatedProjectNumber")]
        public virtual System.Nullable<long> DelegatedProjectNumber { get; set; } 

        /// <summary>The GITKit token of the authenticated user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("idToken")]
        public virtual string IdToken { get; set; } 

        /// <summary>Instance id token of the app.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("instanceId")]
        public virtual string InstanceId { get; set; } 

        /// <summary>The GITKit token for the non-trusted IDP pending to be confirmed by the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("pendingIdToken")]
        public virtual string PendingIdToken { get; set; } 

        /// <summary>The post body if the request is a HTTP POST.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("postBody")]
        public virtual string PostBody { get; set; } 

        /// <summary>The URI to which the IDP redirects the user back. It may contain federated login result params
        /// added by the IDP.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("requestUri")]
        public virtual string RequestUri { get; set; } 

        /// <summary>Whether return 200 and IDP credential rather than throw exception when federated id is already
        /// linked.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("returnIdpCredential")]
        public virtual System.Nullable<bool> ReturnIdpCredential { get; set; } 

        /// <summary>Whether to return refresh tokens.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("returnRefreshToken")]
        public virtual System.Nullable<bool> ReturnRefreshToken { get; set; } 

        /// <summary>Whether return sts id token and refresh token instead of gitkit token.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("returnSecureToken")]
        public virtual System.Nullable<bool> ReturnSecureToken { get; set; } 

        /// <summary>Session ID, which should match the one in previous createAuthUri request.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sessionId")]
        public virtual string SessionId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Request to verify a custom token</summary>
    public class IdentitytoolkitRelyingpartyVerifyCustomTokenRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>GCP project number of the requesting delegated app. Currently only intended for Firebase V1
        /// migration.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("delegatedProjectNumber")]
        public virtual System.Nullable<long> DelegatedProjectNumber { get; set; } 

        /// <summary>Instance id token of the app.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("instanceId")]
        public virtual string InstanceId { get; set; } 

        /// <summary>Whether return sts id token and refresh token instead of gitkit token.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("returnSecureToken")]
        public virtual System.Nullable<bool> ReturnSecureToken { get; set; } 

        /// <summary>The custom token to verify</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("token")]
        public virtual string Token { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Request to verify the password.</summary>
    public class IdentitytoolkitRelyingpartyVerifyPasswordRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The captcha challenge.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("captchaChallenge")]
        public virtual string CaptchaChallenge { get; set; } 

        /// <summary>Response to the captcha.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("captchaResponse")]
        public virtual string CaptchaResponse { get; set; } 

        /// <summary>GCP project number of the requesting delegated app. Currently only intended for Firebase V1
        /// migration.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("delegatedProjectNumber")]
        public virtual System.Nullable<long> DelegatedProjectNumber { get; set; } 

        /// <summary>The email of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("email")]
        public virtual string Email { get; set; } 

        /// <summary>The GITKit token of the authenticated user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("idToken")]
        public virtual string IdToken { get; set; } 

        /// <summary>Instance id token of the app.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("instanceId")]
        public virtual string InstanceId { get; set; } 

        /// <summary>The password inputed by the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("password")]
        public virtual string Password { get; set; } 

        /// <summary>The GITKit token for the non-trusted IDP, which is to be confirmed by the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("pendingIdToken")]
        public virtual string PendingIdToken { get; set; } 

        /// <summary>Whether return sts id token and refresh token instead of gitkit token.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("returnSecureToken")]
        public virtual System.Nullable<bool> ReturnSecureToken { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Template for a single idp configuration.</summary>
    public class IdpConfig : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>OAuth2 client ID.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("clientId")]
        public virtual string ClientId { get; set; } 

        /// <summary>Whether this IDP is enabled.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("enabled")]
        public virtual System.Nullable<bool> Enabled { get; set; } 

        /// <summary>Percent of users who will be prompted/redirected federated login for this IDP.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("experimentPercent")]
        public virtual System.Nullable<int> ExperimentPercent { get; set; } 

        /// <summary>OAuth2 provider.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("provider")]
        public virtual string Provider { get; set; } 

        /// <summary>OAuth2 client secret.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("secret")]
        public virtual string Secret { get; set; } 

        /// <summary>Whitelisted client IDs for audience check.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("whitelistedAudiences")]
        public virtual System.Collections.Generic.IList<string> WhitelistedAudiences { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Request of getting a code for user confirmation (reset password, change email etc.)</summary>
    public class Relyingparty : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>whether or not to install the android app on the device where the link is opened</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("androidInstallApp")]
        public virtual System.Nullable<bool> AndroidInstallApp { get; set; } 

        /// <summary>minimum version of the app. if the version on the device is lower than this version then the user
        /// is taken to the play store to upgrade the app</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("androidMinimumVersion")]
        public virtual string AndroidMinimumVersion { get; set; } 

        /// <summary>android package name of the android app to handle the action code</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("androidPackageName")]
        public virtual string AndroidPackageName { get; set; } 

        /// <summary>whether or not the app can handle the oob code without first going to web</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("canHandleCodeInApp")]
        public virtual System.Nullable<bool> CanHandleCodeInApp { get; set; } 

        /// <summary>The recaptcha response from the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("captchaResp")]
        public virtual string CaptchaResp { get; set; } 

        /// <summary>The recaptcha challenge presented to the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("challenge")]
        public virtual string Challenge { get; set; } 

        /// <summary>The url to continue to the Gitkit app</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("continueUrl")]
        public virtual string ContinueUrl { get; set; } 

        /// <summary>The email of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("email")]
        public virtual string Email { get; set; } 

        /// <summary>iOS app store id to download the app if it's not already installed</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("iOSAppStoreId")]
        public virtual string IOSAppStoreId { get; set; } 

        /// <summary>the iOS bundle id of iOS app to handle the action code</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("iOSBundleId")]
        public virtual string IOSBundleId { get; set; } 

        /// <summary>The user's Gitkit login token for email change.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("idToken")]
        public virtual string IdToken { get; set; } 

        /// <summary>The fixed string "identitytoolkit#relyingparty".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The new email if the code is for email change.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("newEmail")]
        public virtual string NewEmail { get; set; } 

        /// <summary>The request type.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("requestType")]
        public virtual string RequestType { get; set; } 

        /// <summary>The IP address of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("userIp")]
        public virtual string UserIp { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Response of resetting the password.</summary>
    public class ResetPasswordResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The user's email. If the out-of-band code is for email recovery, the user's original
        /// email.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("email")]
        public virtual string Email { get; set; } 

        /// <summary>The fixed string "identitytoolkit#ResetPasswordResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>If the out-of-band code is for email recovery, the user's new email.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("newEmail")]
        public virtual string NewEmail { get; set; } 

        /// <summary>The request type.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("requestType")]
        public virtual string RequestType { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Respone of setting the account information.</summary>
    public class SetAccountInfoResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The name of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("displayName")]
        public virtual string DisplayName { get; set; } 

        /// <summary>The email of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("email")]
        public virtual string Email { get; set; } 

        /// <summary>If email has been verified.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("emailVerified")]
        public virtual System.Nullable<bool> EmailVerified { get; set; } 

        /// <summary>If idToken is STS id token, then this field will be expiration time of STS id token in
        /// seconds.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("expiresIn")]
        public virtual System.Nullable<long> ExpiresIn { get; set; } 

        /// <summary>The Gitkit id token to login the newly sign up user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("idToken")]
        public virtual string IdToken { get; set; } 

        /// <summary>The fixed string "identitytoolkit#SetAccountInfoResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The local ID of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("localId")]
        public virtual string LocalId { get; set; } 

        /// <summary>The new email the user attempts to change to.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("newEmail")]
        public virtual string NewEmail { get; set; } 

        /// <summary>The user's hashed password.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("passwordHash")]
        public virtual string PasswordHash { get; set; } 

        /// <summary>The photo url of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("photoUrl")]
        public virtual string PhotoUrl { get; set; } 

        /// <summary>The user's profiles at the associated IdPs.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("providerUserInfo")]
        public virtual System.Collections.Generic.IList<SetAccountInfoResponse.ProviderUserInfoData> ProviderUserInfo { get; set; } 

        /// <summary>If idToken is STS id token, then this field will be refresh token.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("refreshToken")]
        public virtual string RefreshToken { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
        

        public class ProviderUserInfoData
        {
            /// <summary>The user's display name at the IDP.</summary>
            [Newtonsoft.Json.JsonPropertyAttribute("displayName")]
            public virtual string DisplayName { get; set; } 

            /// <summary>User's identifier at IDP.</summary>
            [Newtonsoft.Json.JsonPropertyAttribute("federatedId")]
            public virtual string FederatedId { get; set; } 

            /// <summary>The user's photo url at the IDP.</summary>
            [Newtonsoft.Json.JsonPropertyAttribute("photoUrl")]
            public virtual string PhotoUrl { get; set; } 

            /// <summary>The IdP ID. For whitelisted IdPs it's a short domain name, e.g., google.com, aol.com, live.net
            /// and yahoo.com. For other OpenID IdPs it's the OP identifier.</summary>
            [Newtonsoft.Json.JsonPropertyAttribute("providerId")]
            public virtual string ProviderId { get; set; } 

        }
    }    

    /// <summary>Response of signing up new user, creating anonymous user or anonymous user reauth.</summary>
    public class SignupNewUserResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The name of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("displayName")]
        public virtual string DisplayName { get; set; } 

        /// <summary>The email of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("email")]
        public virtual string Email { get; set; } 

        /// <summary>If idToken is STS id token, then this field will be expiration time of STS id token in
        /// seconds.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("expiresIn")]
        public virtual System.Nullable<long> ExpiresIn { get; set; } 

        /// <summary>The Gitkit id token to login the newly sign up user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("idToken")]
        public virtual string IdToken { get; set; } 

        /// <summary>The fixed string "identitytoolkit#SignupNewUserResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The RP local ID of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("localId")]
        public virtual string LocalId { get; set; } 

        /// <summary>If idToken is STS id token, then this field will be refresh token.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("refreshToken")]
        public virtual string RefreshToken { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Respone of uploading accounts in batch.</summary>
    public class UploadAccountResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The error encountered while processing the account info.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("error")]
        public virtual System.Collections.Generic.IList<UploadAccountResponse.ErrorData> Error { get; set; } 

        /// <summary>The fixed string "identitytoolkit#UploadAccountResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
        

        public class ErrorData
        {
            /// <summary>The index of the malformed account, starting from 0.</summary>
            [Newtonsoft.Json.JsonPropertyAttribute("index")]
            public virtual System.Nullable<int> Index { get; set; } 

            /// <summary>Detailed error message for the account info.</summary>
            [Newtonsoft.Json.JsonPropertyAttribute("message")]
            public virtual string Message { get; set; } 

        }
    }    

    /// <summary>Template for an individual account info.</summary>
    public class UserInfo : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>User creation timestamp.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("createdAt")]
        public virtual System.Nullable<long> CreatedAt { get; set; } 

        /// <summary>Whether the user is authenticated by the developer.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("customAuth")]
        public virtual System.Nullable<bool> CustomAuth { get; set; } 

        /// <summary>Whether the user is disabled.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("disabled")]
        public virtual System.Nullable<bool> Disabled { get; set; } 

        /// <summary>The name of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("displayName")]
        public virtual string DisplayName { get; set; } 

        /// <summary>The email of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("email")]
        public virtual string Email { get; set; } 

        /// <summary>Whether the email has been verified.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("emailVerified")]
        public virtual System.Nullable<bool> EmailVerified { get; set; } 

        /// <summary>last login timestamp.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lastLoginAt")]
        public virtual System.Nullable<long> LastLoginAt { get; set; } 

        /// <summary>The local ID of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("localId")]
        public virtual string LocalId { get; set; } 

        /// <summary>The user's hashed password.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("passwordHash")]
        public virtual string PasswordHash { get; set; } 

        /// <summary>The timestamp when the password was last updated.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("passwordUpdatedAt")]
        public virtual System.Nullable<double> PasswordUpdatedAt { get; set; } 

        /// <summary>The URL of the user profile photo.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("photoUrl")]
        public virtual string PhotoUrl { get; set; } 

        /// <summary>The IDP of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("providerUserInfo")]
        public virtual System.Collections.Generic.IList<UserInfo.ProviderUserInfoData> ProviderUserInfo { get; set; } 

        /// <summary>The user's plain text password.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("rawPassword")]
        public virtual string RawPassword { get; set; } 

        /// <summary>The user's password salt.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("salt")]
        public virtual string Salt { get; set; } 

        /// <summary>User's screen name at Twitter or login name at Github.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("screenName")]
        public virtual string ScreenName { get; set; } 

        /// <summary>Timestamp in seconds for valid login token.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("validSince")]
        public virtual System.Nullable<long> ValidSince { get; set; } 

        /// <summary>Version of the user's password.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("version")]
        public virtual System.Nullable<int> Version { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
        

        public class ProviderUserInfoData
        {
            /// <summary>The user's display name at the IDP.</summary>
            [Newtonsoft.Json.JsonPropertyAttribute("displayName")]
            public virtual string DisplayName { get; set; } 

            /// <summary>User's email at IDP.</summary>
            [Newtonsoft.Json.JsonPropertyAttribute("email")]
            public virtual string Email { get; set; } 

            /// <summary>User's identifier at IDP.</summary>
            [Newtonsoft.Json.JsonPropertyAttribute("federatedId")]
            public virtual string FederatedId { get; set; } 

            /// <summary>The user's photo url at the IDP.</summary>
            [Newtonsoft.Json.JsonPropertyAttribute("photoUrl")]
            public virtual string PhotoUrl { get; set; } 

            /// <summary>The IdP ID. For white listed IdPs it's a short domain name, e.g., google.com, aol.com, live.net
            /// and yahoo.com. For other OpenID IdPs it's the OP identifier.</summary>
            [Newtonsoft.Json.JsonPropertyAttribute("providerId")]
            public virtual string ProviderId { get; set; } 

            /// <summary>User's raw identifier directly returned from IDP.</summary>
            [Newtonsoft.Json.JsonPropertyAttribute("rawId")]
            public virtual string RawId { get; set; } 

            /// <summary>User's screen name at Twitter or login name at Github.</summary>
            [Newtonsoft.Json.JsonPropertyAttribute("screenName")]
            public virtual string ScreenName { get; set; } 

        }
    }    

    /// <summary>Response of verifying the IDP assertion.</summary>
    public class VerifyAssertionResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The action code.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("action")]
        public virtual string Action { get; set; } 

        /// <summary>URL for OTA app installation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("appInstallationUrl")]
        public virtual string AppInstallationUrl { get; set; } 

        /// <summary>The custom scheme used by mobile app.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("appScheme")]
        public virtual string AppScheme { get; set; } 

        /// <summary>The opaque value used by the client to maintain context info between the authentication request and
        /// the IDP callback.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("context")]
        public virtual string Context { get; set; } 

        /// <summary>The birth date of the IdP account.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("dateOfBirth")]
        public virtual string DateOfBirth { get; set; } 

        /// <summary>The display name of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("displayName")]
        public virtual string DisplayName { get; set; } 

        /// <summary>The email returned by the IdP. NOTE: The federated login user may not own the email.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("email")]
        public virtual string Email { get; set; } 

        /// <summary>It's true if the email is recycled.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("emailRecycled")]
        public virtual System.Nullable<bool> EmailRecycled { get; set; } 

        /// <summary>The value is true if the IDP is also the email provider. It means the user owns the
        /// email.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("emailVerified")]
        public virtual System.Nullable<bool> EmailVerified { get; set; } 

        /// <summary>Client error code.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("errorMessage")]
        public virtual string ErrorMessage { get; set; } 

        /// <summary>If idToken is STS id token, then this field will be expiration time of STS id token in
        /// seconds.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("expiresIn")]
        public virtual System.Nullable<long> ExpiresIn { get; set; } 

        /// <summary>The unique ID identifies the IdP account.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("federatedId")]
        public virtual string FederatedId { get; set; } 

        /// <summary>The first name of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("firstName")]
        public virtual string FirstName { get; set; } 

        /// <summary>The full name of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("fullName")]
        public virtual string FullName { get; set; } 

        /// <summary>The ID token.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("idToken")]
        public virtual string IdToken { get; set; } 

        /// <summary>It's the identifier param in the createAuthUri request if the identifier is an email. It can be
        /// used to check whether the user input email is different from the asserted email.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("inputEmail")]
        public virtual string InputEmail { get; set; } 

        /// <summary>True if it's a new user sign-in, false if it's a returning user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("isNewUser")]
        public virtual System.Nullable<bool> IsNewUser { get; set; } 

        /// <summary>The fixed string "identitytoolkit#VerifyAssertionResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The language preference of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("language")]
        public virtual string Language { get; set; } 

        /// <summary>The last name of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lastName")]
        public virtual string LastName { get; set; } 

        /// <summary>The RP local ID if it's already been mapped to the IdP account identified by the federated
        /// ID.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("localId")]
        public virtual string LocalId { get; set; } 

        /// <summary>Whether the assertion is from a non-trusted IDP and need account linking confirmation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("needConfirmation")]
        public virtual System.Nullable<bool> NeedConfirmation { get; set; } 

        /// <summary>Whether need client to supply email to complete the federated login flow.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("needEmail")]
        public virtual System.Nullable<bool> NeedEmail { get; set; } 

        /// <summary>The nick name of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nickName")]
        public virtual string NickName { get; set; } 

        /// <summary>The OAuth2 access token.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("oauthAccessToken")]
        public virtual string OauthAccessToken { get; set; } 

        /// <summary>The OAuth2 authorization code.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("oauthAuthorizationCode")]
        public virtual string OauthAuthorizationCode { get; set; } 

        /// <summary>The lifetime in seconds of the OAuth2 access token.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("oauthExpireIn")]
        public virtual System.Nullable<int> OauthExpireIn { get; set; } 

        /// <summary>The OIDC id token.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("oauthIdToken")]
        public virtual string OauthIdToken { get; set; } 

        /// <summary>The user approved request token for the OpenID OAuth extension.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("oauthRequestToken")]
        public virtual string OauthRequestToken { get; set; } 

        /// <summary>The scope for the OpenID OAuth extension.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("oauthScope")]
        public virtual string OauthScope { get; set; } 

        /// <summary>The OAuth1 access token secret.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("oauthTokenSecret")]
        public virtual string OauthTokenSecret { get; set; } 

        /// <summary>The original email stored in the mapping storage. It's returned when the federated ID is associated
        /// to a different email.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("originalEmail")]
        public virtual string OriginalEmail { get; set; } 

        /// <summary>The URI of the public accessible profiel picture.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("photoUrl")]
        public virtual string PhotoUrl { get; set; } 

        /// <summary>The IdP ID. For white listed IdPs it's a short domain name e.g. google.com, aol.com, live.net and
        /// yahoo.com. If the "providerId" param is set to OpenID OP identifer other than the whilte listed IdPs the OP
        /// identifier is returned. If the "identifier" param is federated ID in the createAuthUri request. The domain
        /// part of the federated ID is returned.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("providerId")]
        public virtual string ProviderId { get; set; } 

        /// <summary>Raw IDP-returned user info.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("rawUserInfo")]
        public virtual string RawUserInfo { get; set; } 

        /// <summary>If idToken is STS id token, then this field will be refresh token.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("refreshToken")]
        public virtual string RefreshToken { get; set; } 

        /// <summary>The screen_name of a Twitter user or the login name at Github.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("screenName")]
        public virtual string ScreenName { get; set; } 

        /// <summary>The timezone of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("timeZone")]
        public virtual string TimeZone { get; set; } 

        /// <summary>When action is 'map', contains the idps which can be used for confirmation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("verifiedProvider")]
        public virtual System.Collections.Generic.IList<string> VerifiedProvider { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Response from verifying a custom token</summary>
    public class VerifyCustomTokenResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>If idToken is STS id token, then this field will be expiration time of STS id token in
        /// seconds.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("expiresIn")]
        public virtual System.Nullable<long> ExpiresIn { get; set; } 

        /// <summary>The GITKit token for authenticated user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("idToken")]
        public virtual string IdToken { get; set; } 

        /// <summary>The fixed string "identitytoolkit#VerifyCustomTokenResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>If idToken is STS id token, then this field will be refresh token.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("refreshToken")]
        public virtual string RefreshToken { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Request of verifying the password.</summary>
    public class VerifyPasswordResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The name of the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("displayName")]
        public virtual string DisplayName { get; set; } 

        /// <summary>The email returned by the IdP. NOTE: The federated login user may not own the email.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("email")]
        public virtual string Email { get; set; } 

        /// <summary>If idToken is STS id token, then this field will be expiration time of STS id token in
        /// seconds.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("expiresIn")]
        public virtual System.Nullable<long> ExpiresIn { get; set; } 

        /// <summary>The GITKit token for authenticated user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("idToken")]
        public virtual string IdToken { get; set; } 

        /// <summary>The fixed string "identitytoolkit#VerifyPasswordResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The RP local ID if it's already been mapped to the IdP account identified by the federated
        /// ID.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("localId")]
        public virtual string LocalId { get; set; } 

        /// <summary>The OAuth2 access token.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("oauthAccessToken")]
        public virtual string OauthAccessToken { get; set; } 

        /// <summary>The OAuth2 authorization code.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("oauthAuthorizationCode")]
        public virtual string OauthAuthorizationCode { get; set; } 

        /// <summary>The lifetime in seconds of the OAuth2 access token.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("oauthExpireIn")]
        public virtual System.Nullable<int> OauthExpireIn { get; set; } 

        /// <summary>The URI of the user's photo at IdP</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("photoUrl")]
        public virtual string PhotoUrl { get; set; } 

        /// <summary>If idToken is STS id token, then this field will be refresh token.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("refreshToken")]
        public virtual string RefreshToken { get; set; } 

        /// <summary>Whether the email is registered.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("registered")]
        public virtual System.Nullable<bool> Registered { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }
}
